"use strict";
// 1,字面量
let a1;
a1 = 10;
// a1=20  不能给a1重新赋值 20  因为a1是10 类似常量
// 2 ，可以使用 | 来连接多个类型 （联合类型）
// 即 指定变量可以为哪些值或者类型
let b1;
b1 = 'male';
b1 = 'famale';
// b1='a' 报错
let c1;
c1 = true;
c1 = 'hahha';
// c1=3 报错
// 3， any  表示可以是任意类型
// let d1:any
let d1; //声明时 不指定类型  自动是任意类型
d1 = 10;
d1 = '10';
d1 = 'a';
d1 = false;
// 4， unknown 表示未知类型
let e;
e = 10;
e = 'hello';
e = true;
// 5,unknown 和any区别（any尽量不用） 
// unknown类型安全的any
let s;
// d1是any类型 它可以赋值给任意变量  它霍霍别人 不好
// s=d1
e = 'hi';
// 6 直接unknown 赋值给字符串 报错  说明unknown是类型安全的
//  s=e
// 解决方法 
if (typeof e === 'string') {
    s = e;
}
//类型断言  直接告诉 ts编译器我是什么类型
// 语法： 变量 as 类型   <类型> 变量
s = e;
s = e;
// 7, void  表示空 以函数为例 就是表示没有返回值的函数
function fn() {
}
// 8,never  表示永远不会返回结果
// 就是报错即没有函数返回值 停啦
function fn2() {
    throw new Error("报错啦！");
}
